The Python Bridge consists of two components: the IDL to Python bridge and the Python to IDL bridge. The bridge has the following features:
For example, within IDL, you could execute the following Python commands to create a matplotlib plot:
IDL> ran = Python.Import('numpy.random')
IDL> arr = ran.rand(100) ; call "rand" method
IDL> plt = Python.Import('matplotlib.pyplot')
IDL> p = plt.plot(arr) ; call "plot", pass an array
IDL> void = plt.show(block=0) ; pass keyword
Within IDL, you can also directly enter Python "command-line mode":
IDL> >>>
>>> import matplotlib.pyplot as plt
>>> import numpy.random as ran
>>> arr = ran.rand(100)
>>> p = plt.plot(arr)
>>> plt.show()
>>>
IDL>
On the Python side, you can easily access all IDL functionality:
>>> from idlpy import IDL
>>> import numpy.random as ran
>>> arr = ran.rand(100)
>>> p = IDL.plot(arr, title='My Plot')
>>> p.color = 'red'
>>> p.save('myplot.pdf')
>>> p.close()
Your first step should be to install a working copy of Python 2.7.x or 3.4.x including the numpy library. The simplest method is to install one of the pre-configured installations such as Anaconda, which contains everything needed for the IDL-Python bridge. To verify your Python installation, try the following Python commands:
>>> import sys
>>> sys.version
'3.4.1 |Anaconda 2.1.0 (x86_64)| (default, Sep 10 2014, 17:24:09) \n[GCC 4.2.1 (Apple Inc. build 5577)]'
>>> import numpy as np
>>> np.array([1.0,2,3]).dtype
dtype('float64')
The next step is to configure your system environment variables so that IDL and Python can find each other.
You should ensure that your Python executable is on the Windows system PATH environment variable. IDL will use the first Python executable that it finds on the system path. You should also ensure that IDL's bin directory is on the Windows system PATH environment variable when launching Python. For 64-bit Windows this would look like:
PATH = ...;c:\Program Files\Exelis\IDLXX\bin\bin.x86_64;...
where XX is the IDL version number.
If you want multiple versions of IDL side-by-side on your Windows system, you cannot set this permanently in your Windows environment. You need to create a script to append the IDL bin directory to the PATH environment variable, then launch Python.
You will also need to add IDL's bin directory and the lib/bridges directory to the PYTHONPATH environment variable. For 64-bit Windows this would look like:
PYTHONPATH = c:\Program Files\Exelis\IDLXX\bin\bin.x86_64; C:\Program Files\Exelis\IDLXX\lib\bridges
where XX is the IDL version number.
You should ensure that your Python executable is on the PATH environment variable. IDL will use the first Python executable that it finds on the system path. For example, assuming that you have installed Anaconda in /usr/local/anaconda3:
PATH = ...:/usr/local/anaconda3:...
You will also need to add IDL's bin directory and the lib/bridges directory to the PYTHONPATH environment variable. For example:
PYTHONPATH = /usr/local/idl/bin/bin.linux.x86_64:/usr/local/idl/lib/bridges
Then, you need to add both IDL and the Python lib directory to LD_LIBRARY_PATH. For example:
LD_LIBRARY_PATH = /usr/local/anaconda3/linux_34x/lib:/usr/local/idl/bin/bin.linux.x86_64
As a last step, you should also ensure that IDL can find its fonts and resources by executing "source idl_setup" within IDL's bin directory.
To run the IDL-Python bridge on Macintosh platforms, you must set four environment variables:
|
Variable |
PATH |
|
Description |
IDL will use the first Python executable that it finds on the system path. Therefore, prepend the Python |
|
Sequence of Directories |
<python-bin-directory>
$PATH |
|
Bash Example |
export PATH="/Users/<username>/anaconda3/bin:$PATH" |
|
Variable |
DYLD_LIBRARY_PATH |
|
Description |
Prepend the Python and IDL |
|
Sequence of Directories |
$DYLD_LIBRARY_PATH
/System/Library/Frameworks/ImageIO.framework/Resources
/usr/lib
<python-lib-directory>
<IDL_DIR>/bin/bin.darwin.x86_64 |
| Bash Example |
DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/System/Library/Frameworks/ImageIO.framework/Resources"
DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/lib"
DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/Users/<username>/anaconda3/lib"
DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/Users/<username>/Applications/exelis/idl85/bin/bin.darwin.x86_64"
export DYLD_LIBRARY_PATH |
|
Variable |
PYTHONHOME |
|
Description |
Specify the Python home directory. |
|
Bash Example |
export PYTHONHOME="/Users/<username>/anaconda3" |
|
Variable |
PYTHONPATH |
|
Description |
Prepend the IDL and |
| Sequence of Directories |
$PYTHONPATH
<IDL_DIR>/bin/bin.darwin.x86_64
<IDL_DIR>/lib/bridges |
|
Bash Example |
export PYTHONPATH="$PYTHONPATH:/Users/<username>/Applications/exelis/idl85/bin/bin.darwin.x86_64:/Users/<username>/Applications/exelis/idl85/lib/bridges" |
Set these variables as needed for your shell (Bash, C, Korn, etc.) In order for the IDL Workbench to pick up these environment variables, you need to start it from a command line that has these variables set.
As a last step, ensure that IDL can finds its fonts and resources by executing the following command within the IDL bin directory:
source idl_setup